/**
 * 版权 (c) 2015 易联支付有限公司
 * 保留所有权利。
 */
package io.renren.modules.sys.util;

import org.apache.poi.ss.usermodel.Cell;
import org.apache.poi.ss.usermodel.Row;

import java.util.Arrays;
import java.util.Vector;


/**
 * 描述：excel工具类，基于Apache的poi
 *
 * @author 林新格
 * 创建时间：2015-10-28
 */
public class PoiUtil {

    /**
     * 将excel表格的一行，转成string数组
     * @param row
     * @return
     */
    public static String[] toStrings(Row row, int colCount){
        if (row == null || colCount <= 0){
            return null;
        }
        String[] ret = new String[colCount];
        Arrays.fill(ret, "");
        for (int i=0; i<colCount; i++){
            Cell cell = row.getCell(i);
            String temp = "";
            if (cell != null) {
            	temp = Tools.trimRN(getCellFormatValue(cell));
            	if (temp == null){
            		temp = "";
            	}
            	temp = temp.trim();
			}
            ret[i] = temp;
        }
        return ret;
    }
    /**
     * 将excel表格的一行，转成Vector数组
     * @param row
     * @return
     */
    public static Vector<String> toVector(Row row, int colCount){
        if (row == null || colCount <= 0){
            return null;
        }
        Vector<String> ret = new Vector<String>();
        for (int i=0; i<colCount; i++){
            Cell cell = row.getCell(i);
            String temp = "";
            if (cell != null) {
                temp = Tools.trimRN(getCellFormatValue(cell));
                if (temp == null){
                    temp = "";
                }
                temp = temp.trim();
            }
            ret.add(temp);
        }
        return ret;
    }
    /**
     * 根据HSSFCell类型设置数据
     * @param cell
     * @return
     */
    public static String getCellFormatValue(Cell cell) {
        String cellvalue = "";
        if (cell != null) {
            // 判断当前Cell的Type
            switch (cell.getCellType()) {
            // 如果当前Cell的Type为NUMERIC
//            case XSSFCell.CELL_TYPE_NUMERIC:
//            case XSSFCell.CELL_TYPE_FORMULA: {
//                // 判断当前的cell是否为Date
//                if (HSSFDateUtil.isCellDateFormatted(cell)) {
//                    // 如果是Date类型则，转化为Data格式
//                    //方法1：这样子的data格式是带时分秒的：2011-10-12 0:00:00
//                    //cellvalue = cell.getDateCellValue().toLocaleString();
//                    //方法2：这样子的data格式是不带带时分秒的：2011-10-12
//                    Date date = cell.getDateCellValue();
//                    SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
//                    cellvalue = sdf.format(date);
//                }
//                // 如果是纯数字
//                else {
//                    // 取得当前Cell的数值
//                    cellvalue = String.valueOf(cell.getNumericCellValue());
//                }
//                break;
//            }
            // 如果当前Cell的Type为STRIN
//            case HSSFCell.CELL_TYPE_STRING:
//                // 取得当前的Cell字符串
//                cellvalue = cell.getRichStringCellValue().getString();
//                break;
            // 默认的Cell值
            default:
                cellvalue = " ";
            }
        } else {
            cellvalue = "";
        }
        return cellvalue;

    }
}
